﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using QuanLyNhaSach.Report;
using Telerik.WinControls;
using Telerik.WinControls.UI.Export;

namespace QuanLyNhaSach
{
    public partial class frmBC_Chitietnhapkho : Form
    {
        public frmBC_Chitietnhapkho()
        {
            InitializeComponent();
        }
        //Tao Parttern Seleton
        static frmBC_Chitietnhapkho doituong = null;
        public static frmBC_Chitietnhapkho TaoDoiTuong()
        {
            if (doituong == null)
                doituong = new frmBC_Chitietnhapkho();
            return doituong;
        }
        #region Khai Báo Biến
        sv_QuanLyNhaSach.AdapterClient xuli = new sv_QuanLyNhaSach.AdapterClient();
        DataTable bang_TongQuat;
        DataTable bang_ChiTiet;
        string batdau;
        string ketthuc;
        #endregion
        private void bt_xemin_Click(object sender, EventArgs e)
        {
            try
            {
                Report.frm_BC_NhapHang nhapkho = new Report.frm_BC_NhapHang();
                if (dtp_TuNgay.Value > DateTime.Now)
                {
                    errorProvider1.SetError(dtp_TuNgay, "Ngày bắt đầu phải nhỏ hơn hoặc bằng ngày hiện tại");
                }
                else if (dtp_DenNgay.Value > DateTime.Now)
                {
                    errorProvider1.SetError(dtp_DenNgay, "Ngày đến phải nhỏ hơn hoặc bằng ngày hiện tại");
                }
                else if ((DateTime.Now.Year - dtp_TuNgay.Value.Year) > 3)
                {
                    errorProvider1.SetError(dtp_TuNgay, "Năm bắt đầu không lâu 3 năm so với năm nay");
                }
                else if ((DateTime.Now.Year - dtp_DenNgay.Value.Year) > 3)
                {
                    errorProvider1.SetError(dtp_DenNgay, "Năm đến không lâu 3 năm so với năm nay");
                }
                else if (dtp_TuNgay.Value > dtp_DenNgay.Value)
                {
                    errorProvider1.SetError(dtp_DenNgay, "Ngày kết thúc phải lớn hơn ngày bắt đầu!");
                }
                else
                {
                    nhapkho.TuNgay = dtp_TuNgay.Value;
                    nhapkho.DenNgay = dtp_DenNgay.Value;
                    nhapkho.ShowDialog();
                }
            }
            catch (Exception ex)
            {

            }
        }

        private void bt_Loc_ToggleStateChanged(object sender, Telerik.WinControls.UI.StateChangedEventArgs args)
        {
            //Load DS Tong Quat theo Ngay Thang Nam
            try
            {
                errorProvider1.Clear();
                if (dtp_TuNgay.Value > DateTime.Now)
                {
                    errorProvider1.SetError(dtp_TuNgay, "Ngày bắt đầu phải nhỏ hơn hoặc bằng ngày hiện tại");
                }
                else if (dtp_DenNgay.Value > DateTime.Now)
                {
                    errorProvider1.SetError(dtp_DenNgay, "Ngày đến phải nhỏ hơn hoặc bằng ngày hiện tại");
                }
                else if ((DateTime.Now.Year - dtp_TuNgay.Value.Year) > 3)
                {
                    errorProvider1.SetError(dtp_TuNgay, "Năm bắt đầu không lâu 3 năm so với năm nay");
                }
                else if ((DateTime.Now.Year - dtp_DenNgay.Value.Year) > 3)
                {
                    errorProvider1.SetError(dtp_DenNgay, "Năm đến không lâu 3 năm so với năm nay");
                }
                else if (dtp_TuNgay.Value > dtp_DenNgay.Value)
                {
                    errorProvider1.SetError(dtp_DenNgay, "Ngày kết thúc phải lớn hơn ngày bắt đầu!");
                }
                else
                {
                    batdau = dtp_TuNgay.Value.Month + "/" + dtp_TuNgay.Value.Day + "/" + dtp_TuNgay.Value.Year;
                    ketthuc = dtp_DenNgay.Value.Month + "/" + dtp_DenNgay.Value.Day + "/" + dtp_DenNgay.Value.Year;
                    string sql = "select * from HoaDonNhapHang where ngaynhap between '" + batdau + "' and '" + ketthuc + "'";
                    DataSet ds = new DataSet();
                    ds.ReadXml(new StringReader(xuli.selectqueryByText(sql)));
                    if (ds.Tables.Count > 0)
                    {
                        bang_TongQuat = new DataTable();
                        bang_TongQuat = ds.Tables[0];
                        for (int i = 0; i < bang_TongQuat.Rows.Count; i++)
                        {
                            if (bang_TongQuat.Rows[i]["TongThanhTien"].ToString().Contains(".0000") == true)
                            {
                                bang_TongQuat.Rows[i]["TongThanhTien"] = double.Parse(bang_TongQuat.Rows[i]["TongThanhTien"].ToString()).ToString("#,##0");
                                bang_TongQuat.Rows[i]["SoTienDaDua"] = double.Parse(bang_TongQuat.Rows[i]["SoTienDaDua"].ToString()).ToString("#,##0");
                                bang_TongQuat.Rows[i]["SoTienConLai"] = double.Parse(bang_TongQuat.Rows[i]["SoTienConLai"].ToString()).ToString("#,##0");
                                bang_TongQuat.Rows[i]["VAT"] = (float.Parse(bang_TongQuat.Rows[i]["VAT"].ToString()) * 100).ToString() + "%";
                                bang_TongQuat.Rows[i]["NgayNhap"] = DateTime.Parse(bang_TongQuat.Rows[i]["NgayNhap"].ToString()).ToShortDateString();
                                if (bang_TongQuat.Rows[i]["NgayHenThanhToan"].ToString() != "")
                                {
                                    bang_TongQuat.Rows[i]["NgayHenThanhToan"] = DateTime.Parse(bang_TongQuat.Rows[i]["NgayHenThanhToan"].ToString()).ToShortDateString();
                                }
                            }
                        }
                        gv_TongHDNhapHang.DataSource = bang_TongQuat;
                    }
                    else
                    {
                        MessageBox.Show("Không tìm thấy dữ liệu.", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    }
                }
            }
            catch (Exception ex)
            {
                
            }
        }

        bool openExportFile = false;
        private bool exportVisualSettings;
        private void bt_XuatRaExcel_Click(object sender, EventArgs e)
        {
            saveFileDialog1.Filter = "Excel (*.xls)|*.xls";
            if (saveFileDialog1.ShowDialog() != DialogResult.OK)
            {
                return;
            }

            if (saveFileDialog1.FileName.Equals(String.Empty))
            {
                RadMessageBox.SetThemeName(this.gv_TongHDNhapHang.ThemeName);
                RadMessageBox.Show("Làm ơn nhập tên file.");
                return;
            }
            string fileName = this.saveFileDialog1.FileName;

            ExportToExcelML excelExporter = new ExportToExcelML(this.gv_TongHDNhapHang);

            excelExporter.SheetMaxRows = ExcelMaxRows._1048576;
            excelExporter.ExportVisualSettings = this.exportVisualSettings;


            try
            {
                excelExporter.RunExport(fileName);

                RadMessageBox.SetThemeName(this.gv_TongHDNhapHang.ThemeName);
                DialogResult dr = RadMessageBox.Show("Dữ liệu trong Grid đã được in thành công. Bạn có muốn mở file này không?",
                    "Export to Excel", MessageBoxButtons.YesNo, RadMessageIcon.Question);
                if (dr == DialogResult.Yes)
                {
                    openExportFile = true;
                }
            }
            catch (IOException ex)
            {
                RadMessageBox.SetThemeName(this.gv_TongHDNhapHang.ThemeName);
                RadMessageBox.Show(this, ex.Message, "I/O Error", MessageBoxButtons.OK, RadMessageIcon.Error);
            }
        }

        private void bt_DongForm_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void gv_TongHDNhapHang_SelectionChanged(object sender, EventArgs e)
        {
            try
            {
                if (bang_TongQuat != null)
                {
                    string sql = "select CTNhapHang.MaMH,TenMH,SoLuong,DonGia,ChietKhau,ThanhTien "
                                 + "from MatHang,HoaDonNhapHang,CTNhapHang "
                                 + "where HoaDonNhapHang.MaHDNH = CTNHapHang.MaHDNH and CTNhapHang.MaMH = MatHang.MaMH "
                                 + "and HoaDonNhapHang.MaHDNH = '" + gv_TongHDNhapHang.CurrentRow.Cells["MaHDNH"].Value.ToString().Trim() + "'";
                    DataSet ds_tam = new DataSet();
                    ds_tam.ReadXml(new StringReader(xuli.selectqueryByText(sql)));
                    if (ds_tam.Tables.Count > 0)
                    {
                        bang_ChiTiet = new DataTable();
                        bang_ChiTiet = ds_tam.Tables[0];
                        for (int i = 0; i < bang_ChiTiet.Rows.Count; i++)
                        {
                            if (bang_ChiTiet.Rows[i]["ThanhTien"].ToString().Contains(".0000") == true)
                            {
                                bang_ChiTiet.Rows[i]["ThanhTien"] = double.Parse(bang_ChiTiet.Rows[i]["ThanhTien"].ToString()).ToString("#,##0");
                                bang_ChiTiet.Rows[i]["DonGia"] = double.Parse(bang_ChiTiet.Rows[i]["DonGia"].ToString()).ToString("#,##0");

                                bang_ChiTiet.Rows[i]["ChietKhau"] = (float.Parse(bang_ChiTiet.Rows[i]["ChietKhau"].ToString()) * 100).ToString() + "%";
                            }
                        }
                        gv_ChiTietHDNhapHang.DataSource = bang_ChiTiet;
                    }
                    else
                    {
                        MessageBox.Show("Không có dữ liệu của hoá đơn này", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    }
                }
            }
            catch (Exception)
            {

            }
        }

        private void bt_Loc_Click(object sender, EventArgs e)
        {
            try
            {
                errorProvider1.Clear();
                if (dtp_TuNgay.Value > DateTime.Now)
                {
                    errorProvider1.SetError(dtp_TuNgay, "Ngày bắt đầu phải nhỏ hơn hoặc bằng ngày hiện tại");
                }
                else if (dtp_DenNgay.Value > DateTime.Now)
                {
                    errorProvider1.SetError(dtp_DenNgay, "Ngày đến phải nhỏ hơn hoặc bằng ngày hiện tại");
                }
                else if ((DateTime.Now.Year - dtp_TuNgay.Value.Year) > 3)
                {
                    errorProvider1.SetError(dtp_TuNgay, "Năm bắt đầu không lâu 3 năm so với năm nay");
                }
                else if ((DateTime.Now.Year - dtp_DenNgay.Value.Year) > 3)
                {
                    errorProvider1.SetError(dtp_DenNgay, "Năm đến không lâu 3 năm so với năm nay");
                }
                else if (dtp_TuNgay.Value > dtp_DenNgay.Value)
                {
                    errorProvider1.SetError(dtp_DenNgay, "Ngày kết thúc phải lớn hơn ngày bắt đầu!");
                }
                else
                {
                    batdau = dtp_TuNgay.Value.Month + "/" + dtp_TuNgay.Value.Day + "/" + dtp_TuNgay.Value.Year;
                    ketthuc = dtp_DenNgay.Value.Month + "/" + dtp_DenNgay.Value.Day + "/" + dtp_DenNgay.Value.Year;
                    string sql = "select * from HoaDonNhapHang where ngaynhap between '" + batdau + "' and '" + ketthuc + "'";
                    DataSet ds = new DataSet();
                    ds.ReadXml(new StringReader(xuli.selectqueryByText(sql)));
                    if (ds.Tables.Count > 0)
                    {
                        bang_TongQuat = new DataTable();
                        bang_TongQuat = ds.Tables[0];
                        for (int i = 0; i < bang_TongQuat.Rows.Count; i++)
                        {
                            if (bang_TongQuat.Rows[i]["TongThanhTien"].ToString().Contains(".0000") == true)
                            {
                                bang_TongQuat.Rows[i]["TongThanhTien"] = double.Parse(bang_TongQuat.Rows[i]["TongThanhTien"].ToString()).ToString("#,##0");
                                bang_TongQuat.Rows[i]["SoTienDaDua"] = double.Parse(bang_TongQuat.Rows[i]["SoTienDaDua"].ToString()).ToString("#,##0");
                                bang_TongQuat.Rows[i]["SoTienConLai"] = double.Parse(bang_TongQuat.Rows[i]["SoTienConLai"].ToString()).ToString("#,##0");
                                bang_TongQuat.Rows[i]["VAT"] = (float.Parse(bang_TongQuat.Rows[i]["VAT"].ToString()) * 100).ToString() + "%";
                                bang_TongQuat.Rows[i]["NgayNhap"] = DateTime.Parse(bang_TongQuat.Rows[i]["NgayNhap"].ToString()).ToShortDateString();
                                if (bang_TongQuat.Rows[i]["NgayHenThanhToan"].ToString() != "")
                                {
                                    bang_TongQuat.Rows[i]["NgayHenThanhToan"] = DateTime.Parse(bang_TongQuat.Rows[i]["NgayHenThanhToan"].ToString()).ToShortDateString();
                                }
                            }
                        }
                        gv_TongHDNhapHang.DataSource = bang_TongQuat;
                    }
                    else
                    {
                        MessageBox.Show("Không tìm thấy dữ liệu.", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    }
                }
            }
            catch (Exception ex)
            {

            }
        }
    }
}
